/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package avenue;

import javax.swing.JOptionPane;
import model.AppUser;
import model.RolePermission;

/**
 *
 * @author Aggelos
 */
public class Session {
    
    public static AppUser loginUser;
    public static final int USERS_MODULE =1;
    public static final int CUSTOMERS_MODULE =2;
    public static final int PROGRAMS_MODULE =3;
    public static final int TOLL_COLLECTION_MODULE =4;
    public static final int PAYMENTS_MODULE =5;
    public static final int LOG_MODULE =6;
    public static final int ROLE_MODULE =7;
    
    public Session() {
    }
    
    public static boolean doesSessionUserHasPermission(int permission){
        boolean ret=false;
        if (loginUser.getId()==null){ 
            return false;
        }
        if (loginUser.getRoleId()==null){ 
            return false;
        }
        if (loginUser.getRoleId().getId()==1){ //αν ειναι διαχειριστής εχει δικαώμα αρα true
            return true;
        }
        if (loginUser.getRoleId().getRolePermissionList()==null){
            return false;
        }
        for (RolePermission rp : loginUser.getRoleId().getRolePermissionList()){
            
            if (rp.getModuleId().getId() == permission){
                
                
                return true;
               
            }
                
        }
        return ret;
    }

     public static boolean canUserCreate(int permission){ // εχει δικαίωμα δημιουργίας
        boolean ret=false;
        if (loginUser.getId()==null){ 
            return false;
        }
        if (loginUser.getRoleId()==null){ 
            return false;
        }
        if (loginUser.getRoleId().getId()==1){ //αν ειναι διαχειριστής εχει δικαώμα αρα true
            return true;
        }
        if (loginUser.getRoleId().getRolePermissionList()==null){
            return false;
        }
        for (RolePermission rp : loginUser.getRoleId().getRolePermissionList()){
            
            if (rp.getModuleId().getId() == permission){//Αν εχει δικαιώματα για το module βρε το
                
               if (rp.getCanCreate()==1){ // και αν εχει 1 τοτε εχει δικαίωμα
                                
                return true;
               }
            }
                
        }
        return ret;
    }
    
     
      public static boolean canUserRetrive(int permission){ // εχει δικαίωμα αναγνωσης
        boolean ret=false;
        if (loginUser.getId()==null){ 
            return false;
        }
        if (loginUser.getRoleId()==null){ 
            return false;
        }
        if (loginUser.getRoleId().getId()==1){ //αν ειναι διαχειριστής εχει δικαώμα αρα true
            return true;
        }
        if (loginUser.getRoleId().getRolePermissionList()==null){
            return false;
        }
        for (RolePermission rp : loginUser.getRoleId().getRolePermissionList()){
            
            if (rp.getModuleId().getId() == permission){ //Αν εχει δικαιώματα για το module βρε το
                
               if (rp.getCanRetrieve()==1){ // και αν εχει 1 τοτε εχει δικαίωμα
                                
                return true;
               }
            }
                
        }
        return ret;
    }
      
      public static boolean canUserUpdate(int permission){// εχει δικαίωμα ενημέρωσης
        boolean ret=false;
        if (loginUser.getId()==null){ 
            return false;
        }
        if (loginUser.getRoleId()==null){ 
            return false;
        }
        if (loginUser.getRoleId().getId()==1){ //αν ειναι διαχειριστής εχει δικαώμα αρα true
            return true;
        }
        if (loginUser.getRoleId().getRolePermissionList()==null){
            return false;
        }
        for (RolePermission rp : loginUser.getRoleId().getRolePermissionList()){//Αν εχει δικαιώματα για το module βρε το
            
            if (rp.getModuleId().getId() == permission){// και αν εχει 1 τοτε εχει δικαίωμα
                
               if (rp.getCanUpdate()==1){
                                
                return true;
               }
            }
                
        }
        return ret;
    }
      
      public static boolean canUserDelete(int permission){// εχει δικαίωμα διαγραφής
        boolean ret=false;
        if (loginUser.getId()==null){ 
            return false;
        }
        if (loginUser.getRoleId()==null){ 
            return false;
        }
        if (loginUser.getRoleId().getId()==1){ 
            return true;
        }
        if (loginUser.getRoleId().getRolePermissionList()==null){
            return false;
        }
        for (RolePermission rp : loginUser.getRoleId().getRolePermissionList()){
            
            if (rp.getModuleId().getId() == permission){
                
               if (rp.getCanDelete()==1){
                                
                return true;
               }
            }
                
        }
        return ret;
    }
      
       public static boolean UserStationLevel(int permission){
        boolean ret=false;
        if (loginUser.getId()==null){ 
            return false;
        }
        if (loginUser.getRoleId()==null){ 
            return false;
        }
        if (loginUser.getRoleId().getId()==1){ 
            return true;
        }
        if (loginUser.getRoleId().getRolePermissionList()==null){
            return false;
        }
        for (RolePermission rp : loginUser.getRoleId().getRolePermissionList()){
            
            if (rp.getModuleId().getId() == permission){
                
               if (rp.getStationLevelAccess()==1){
                                
                return true;
               }
            }
                
        }
        return ret;
    }
}
